/*


*/
#include <stdio.h>
//用栈来实现十进制转二进制
struct StackNode{
    int arr[100];
    int top;
};
typedef struct StackNode Stack;
void Push(Stack *s,int value){
    s->top++;
    s->arr[s->top]=value;
}
int Pop(Stack *s){
    if(s->top!=-1){
        return s->arr[s->top--];
    }

    //s->top--;
}

int StackIsEmpty(Stack s){
    return s.top==-1;
}


//StackIsEmpty() 为空 返回1  不为空 返回0
//用栈来存储转换的二进制数
//num:待转换的十进制数
void DecimalToBinary(int num){
    //创建一个栈，用于存数
     Stack s;
     s.top=-1;
    //1.除以2，获得余数，将余数存入到栈里面
    int radium,binaryBit;
    while(num!=0){
        radium = num%2;//获得余数
        Push(&s,radium);//进栈
        num=num/2;
    }
    //2.等除完之后，将数依次出栈，即可得到转换后的二进制数
    while(!StackIsEmpty(s)){
        binaryBit= Pop(&s);
        printf("%d",binaryBit);
    }

}

int main() {
    int num =1658;
    DecimalToBinary(num);
   // printf("Hello, World!\n");
    return 0;
}
